package cn.doitedu.day02

/**
 * map方法，动词，意味做映射
 *
 * map方法的底层实现：就是将原理数组或集合中的每一个元素依次进行遍历，并且应用外部出入的函数，将返函数回值添加到一个新的数组或集合中
 */
object MapDemo2 {

  def main(args: Array[String]): Unit = {

    val arr: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

    //调用map方法将原理arr中的元素乘以10

    //1.传入外部已经定义的函数
    val f = (x: Int) => x * 10.0
    val arr1: Array[Double] = arr.map(f)

    //2.传入匿名函数
    val arr2: Array[Double] = arr.map((x: Int) => x * 10.0)

    //3.传入简写的匿名函数（可以将函数的类型去掉）
    //因为arr中元素的类型已经确定了，所有函数的参数类型可以省略
    val arr3: Array[Double] = arr.map((x) => x * 10.0)

    //4.如果函数的参数个数只有一个，那么函数的参数列表的括号也可以省略
    val arr4: Array[Double] = arr.map(x => x * 10.0)

    //5.更加简介的方式，使用神奇的下划线（占位符,相当于一个特殊的临时变量）
    val arr5: Array[Double] = arr.map(_ * 10.0)

  }


}
